package com.chenju.easyshotjava.core;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class TestCaseLoader {
    private static final Logger logger = LoggerFactory.getLogger(TestCaseLoader.class);

    public List<String> loadTestCaseIds(String fileName) {
        List<String> testCaseIds = new ArrayList<>();
        if (fileName.endsWith(".docx") || fileName.endsWith(".xlsx")){
            try (FileInputStream fis = new FileInputStream(fileName)) {
                if (fileName.endsWith(".docx")) {
                    testCaseIds.addAll(WordUtils.getTestCaseIds(fis));
                } else if (fileName.endsWith(".xlsx")) {
                    testCaseIds.addAll(ExcelUtils.getTestCaseIds(fis));
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
                logger.warn(String.format("文件未找到: %s", fileName));
            } catch (IOException e) {
                e.printStackTrace();
                logger.error(String.format("读取文件时出错: %s", fileName));
            }
        } else {
            boolean fileFound = false; // 标记是否找到任何文件

            // 尝试读取 .xlsx 文件
            try (FileInputStream fis = new FileInputStream(fileName + ".xlsx")) {
                fileFound = true; // 标记找到 .xlsx 文件
                testCaseIds.addAll(ExcelUtils.getTestCaseIds(fis));
            } catch (FileNotFoundException e) {
                logger.warn(String.format("文件不存在: %s", fileName + ".xlsx"));
            } catch (IOException e) {
                logger.error(String.format("读取文件时出错: %s", fileName + ".xlsx"));
            }

            // 尝试读取 .docx 文件
            if (!fileFound) { // 仅在未找到 .xlsx 文件时尝试读取 .docx
                try (FileInputStream fis = new FileInputStream(fileName + ".docx")) {
                    fileFound = true; // 标记找到 .docx 文件
                    testCaseIds.addAll(WordUtils.getTestCaseIds(fis));
                } catch (FileNotFoundException e) {
                    logger.warn(String.format("文件不存在: %s", fileName + ".docx"));
                } catch (IOException e) {
                    logger.error(String.format("读取文件时出错: %s", fileName + ".docx"));
                }
            }

            // 如果两种文件都未找到，提示用户
            if (!fileFound) {
                logger.warn(String.format("未找到合适的文件, 如: %s, %s", "input.docx", "input.xlsx"));
            }
        }
        return testCaseIds;
    }
}